home *** CD-ROM | disk | FTP | other *** search
/ Aminet 46 / Aminet 46 (2001)(GTI - Schatztruhe)[!][Dec 2001].iso / Aminet / text / edit / edt10src.lha / txt / RxTexts.mod < prev    next >
Text File  |  1995-04-09  |  5KB  |  237 lines

  1. (*
  2.   .name         RxTexts
  3.   .task         arexx texts commands
  4.   .release      1.0
  5.   .language     Oberon-2
  6.   .translator   Amiga Oberon 3.2
  7.   .system req.  AmigaOS 2.04 or higher
  8.   .author       Joachim Barheine
  9.   .address      Hochgrevestr. 3, 38640 Goslar
  10.   .copyright    (c) 1995 by J.Barheine
  11. *)
  12.  
  13. (* .info: 31/03/95, 17:23:54, version 2 *)
  14.  
  15. MODULE RxTexts;
  16.  
  17. IMPORT
  18.   ASCII,
  19.   F:= Files,
  20.   IO:= IOServer,
  21.   L:= UntracedLists,
  22.   P:= EPrint,
  23.   Prj:= EProject,
  24.   Req:= ERequests,
  25.   Rx:= ERexx,
  26.   RxRequests,
  27.   Str:= StrPool,
  28.   T:= ETexts,
  29.   W:= Windows;
  30.  
  31. PROCEDURE FirstText* (VAR w: W.Window);
  32.  
  33. BEGIN
  34.   w:= IO.WindowFromText(IO.texts.head(IO.Text))(W.Window);
  35. END FirstText;
  36.  
  37. PROCEDURE ForceAutosave*;
  38.  
  39. BEGIN
  40.   IO.Autosave;
  41. END ForceAutosave;
  42.  
  43. PROCEDURE InsertFile* (w: W.Window);
  44.  
  45. VAR
  46.   filename: ARRAY F.filenameLen OF CHAR;
  47.   name: ARRAY F.nameLen OF CHAR;
  48.   done: BOOLEAN;
  49.  
  50. BEGIN
  51.   IO.Busy(w.text, Str.inserting^);
  52.   F.GetFilename(filename, w.text(T.Text).path, "");  (* current directory *)
  53.   done:= Rx.GetStrLast(filename) OR Req.ReqFile(w.win, filename, FALSE);
  54.   IF done THEN
  55.     F.GetName(name, filename);
  56.     w.DisplayOff;
  57.     REPEAT
  58.       done:= w.text(T.Text).InsertText(w.pos, filename);
  59.     UNTIL done OR ~Prj.ReqInsertErr(w, name);
  60.     w.DisplayOn;
  61.   END;
  62.   IO.BusyDone(w.text);
  63.   Rx.SetBoolResult(done);
  64. END InsertFile;
  65.  
  66. PROCEDURE LastText* (VAR w: W.Window);
  67.  
  68. BEGIN
  69.   w:= IO.WindowFromText(IO.texts.tail(IO.Text))(W.Window);
  70. END LastText;
  71.  
  72. PROCEDURE NextText* (VAR w: W.Window);
  73.  
  74. VAR
  75.   res: BOOLEAN;
  76.  
  77. BEGIN
  78.   res:= TRUE;
  79.   IF w.text.next # NIL THEN
  80.     w:= IO.WindowFromText(w.text.next(IO.Text))(W.Window);
  81.   ELSIF Rx.Match("CYCLE") THEN
  82.     FirstText(w);
  83.   ELSE
  84.     res:= FALSE;
  85.   END;
  86.   Rx.SetBoolResult(res);
  87. END NextText;
  88.  
  89. PROCEDURE Open* (w: W.Window; new: T.Text): BOOLEAN;
  90.  
  91. VAR
  92.   filename: ARRAY F.filenameLen OF CHAR;
  93.   name: ARRAY F.nameLen OF CHAR;
  94.   done: BOOLEAN;
  95.  
  96. BEGIN
  97.   done:= FALSE;
  98.   w.Busy(Str.opening^);
  99.   w.UnMark;  (* forget marks *)
  100.   IF ~w.text(T.Text).new THEN
  101.     F.GetFilename(filename, w.text(T.Text).path, "")
  102.   ELSE
  103.     filename:= "";
  104.   END;
  105.   IF Rx.GetStrLast(filename) OR Req.ReqFile(w.win, filename, FALSE) THEN
  106.     done:= TRUE;
  107.     F.GetName(name, filename);
  108.     LOOP
  109.       IF new.Open(filename) THEN
  110.         IF (w.text(T.Text).useCount = 1) & (w.text(T.Text).changes # 0) THEN
  111.           CASE Prj.ReqSave(w) OF
  112.             0: new.Dispose;       (* cancel *)
  113.                done:= FALSE;
  114.           | 1: Prj.Save(w);         (* save *)
  115.                w.NewText(new);
  116.           | 2: Prj.SaveAs(w);       (* save as *)
  117.                w.NewText(new);
  118.           | 3: w.NewText(new);    (* no *)
  119.           END;
  120.         ELSE
  121.           w.NewText(new);
  122.         END;
  123.         EXIT;
  124.       ELSIF ~Prj.ReqOpenErr(w, name) THEN
  125.         new.Dispose;
  126.         done:= FALSE;
  127.         EXIT;
  128.       END;
  129.     END;  (* if open *)
  130.   END;  (* loop *)
  131.   w.BusyDone;
  132.   Rx.SetBoolResult(done);
  133.   RETURN done;
  134. END Open;
  135.  
  136. PROCEDURE PrevText* (w: W.Window);
  137.  
  138. VAR
  139.   res: BOOLEAN;
  140.  
  141. BEGIN
  142.   res:= TRUE;
  143.   IF w.text.prev # NIL THEN
  144.     w:= IO.WindowFromText(w.text.prev(IO.Text))(W.Window);
  145.   ELSIF Rx.Match("CYCLE") THEN
  146.     LastText(w);
  147.   ELSE
  148.     res:= FALSE;
  149.   END;
  150.   Rx.SetBoolResult(res);
  151. END PrevText;
  152.  
  153. PROCEDURE Print* (w: W.Window);
  154.  
  155. VAR
  156.   doIt: BOOLEAN;
  157.  
  158. BEGIN
  159.   doIt:= RxRequests.ReqPrint(w);
  160.   IF doIt THEN
  161.     IO.Busy(w.text, Str.printing^);
  162.     P.Print(w, 0, w.text(T.Text).len - 1);
  163.     IO.BusyDone(w.text);
  164.   END;
  165.   Rx.SetBoolResult(doIt);
  166. END Print;
  167.  
  168. PROCEDURE Save* (w: W.Window);
  169.  
  170. BEGIN
  171.   Prj.Save(w);
  172.   Rx.SetBoolResult(w.text(T.Text).changes = 0);
  173. END Save;
  174.  
  175. PROCEDURE^ SetFilename* (w: W.Window);
  176.  
  177. PROCEDURE SaveAs* (w: W.Window);
  178.  
  179. BEGIN
  180.   IF Rx.More() THEN
  181.     SetFilename(w);
  182.     Prj.Save(w);
  183.   ELSE
  184.     Prj.SaveAs(w);
  185.   END;
  186.   Rx.SetBoolResult(w.text(T.Text).changes = 0);
  187. END SaveAs;
  188.  
  189. PROCEDURE SaveTemp* (w: W.Window);
  190.  
  191. VAR
  192.   f: F.File;
  193.   filename: ARRAY 256 OF CHAR;
  194.   done: BOOLEAN;
  195.  
  196. BEGIN
  197.   done:= Rx.GetStrLastErr(filename) & f.Open(filename, TRUE);
  198.   IF done THEN
  199.    done:= w.text(T.Text).StoreTemp(f);
  200.    f.Close;
  201.   END;
  202.   Rx.SetBoolResult(done);
  203. END SaveTemp;
  204.  
  205. PROCEDURE SelectText* (VAR w: W.Window);
  206.  
  207. VAR
  208.   id: LONGINT;
  209.   n: L.NodePtr;
  210.  
  211. BEGIN
  212.   IF Rx.GetNumErr(id) THEN
  213.     n:= IO.GetText(SHORT(id));
  214.     IF n # NIL THEN
  215.       w:= n(W.Window);
  216.     ELSE
  217.       Rx.ErrorMsg(Str.unknownTextID^);
  218.     END;
  219.   END;
  220. END SelectText;
  221.  
  222. PROCEDURE SetFilename* (w: W.Window);
  223.  
  224. VAR
  225.   filename: ARRAY F.filenameLen OF CHAR;
  226.   path: ARRAY F.pathLen OF CHAR;
  227.   name: ARRAY F.nameLen OF CHAR;
  228.  
  229. BEGIN
  230.   IF Rx.GetStrLastErr(filename) THEN
  231.     F.GetName(name, filename);
  232.     F.GetPath(path, filename);
  233.     w.text(T.Text).RenameFile(path, name);
  234.   END;
  235. END SetFilename;
  236.  
  237. END RxTexts.